/*
    组合子模块，合并导出
*/
import React from 'react'

import ListStore from "./list";
import UserStore from "./user";
class RootStore {
    constructor() {
        // 对子模块进行实例化操作
        this.listStore = new ListStore()
        this.userStore = new UserStore()

        // 将来实例化根store的时候
        // 根store有两个属性，分别是listStore 和 userStore
        // 各自对应的值，就是我们导入的子模块实例对象
    }
}

// 实例化操作
const rootStore = new RootStore()
// 使用react context机制 完成统一方法封装
const context = React.createContext(rootStore) // 创建context 把store实例传进去，rootStore就是默认参数
/*
    Provider value={传递的数据}
    查找机制： useContext 优先从Provider 的vlaue 找， 找不到 就会找createContext方法传递过来的默认参数
*/
const useStore = () => React.useContext(context)    // 这个方法的作用： 通过 useContext 拿到rootStore实例对象，然后返回
// 业务组件中，调用useStore() 就会得到 rootStore 实例

export {useStore}